1. Field of the Invention
Embodiments of the present invention generally relate to computer resource management and, more particularly, to a method and apparatus for managing execution of a plurality of computer tasks based on availability of computer resources.
2. Description of the Related Art
Because of the progression of high performance computer systems, complex software programs evolved to consume a significant amount of computer resources (e.g., a CPU, a memory, and/or the like). Generally, software programs may execute various computer tasks as a foreground computer task and/or background computer task. For example, the security software programs execute one or more computer tasks (e.g., scanning a file while downloading, installing an update or a patch and/or the like) in a background, while a user interacts with other software programs (e.g., MS WORD, MS EXCEL and/or the like). However, each computer task requires a certain amount of the computer resources to execute properly and completely. As such, the background computer tasks may utilize approximately the same amount of the computer resources as the foreground tasks. Consequently, a response time of a user interaction with the other software programs may be delayed.
Occasionally, the background computer tasks of the software programs (e.g., the security software programs) may be suspended and/or delayed to enhance such a response time. However, such a suspension and/or delay may compromise proper functioning, security and/or the like of the computer system. For example, the security software program may suspend an important computer task (e.g., scanning the file while downloading that has malware attached to it). As a result, the security of the computer system is compromised. While in other instances, if the background computer tasks are executed as scheduled, then the response time of the user interaction is affected (i.e., delayed).
Currently, various software programs are employed to schedule computer tasks. Such computer task scheduling software programs execute the computer tasks at pre-defined (i.e., fixed) intervals. Further, the user may configure and schedule the tasks to be performed at a later time and/or a date. For example, the user may utilize a command (e.g., a UNIX command) to schedule the tasks. However, such computer task scheduling software programs fail to bind the execution of the computer tasks to availability of the computer resources. For example, a particular task may be executed even though each and every required resource is not available. As another example, the particular task may not be suspended in response to the removal of one or more critical computer resources. Hence, one or more resource requirements of the computer task cannot be dynamically modified.
Therefore, there is a need in the art for a method and apparatus for managing execution of a plurality of computer tasks based on availability of computer resources.